package com.cougil.uoc.seghismed.webservice.impl;

import javax.jws.WebService;

import org.apache.log4j.Logger;

import com.cougil.uoc.seghismed.business.AppService;
import com.cougil.uoc.seghismed.model.ciphed.UsuariCiphed;
import com.cougil.uoc.seghismed.model.comunicacions.ciphed.PeticioCiphed;
import com.cougil.uoc.seghismed.model.comunicacions.ciphed.RespostaCiphed;
import com.cougil.uoc.seghismed.webservice.CoreWebService;

/**
 * Classe principal que conté els mètodes principals que s'empraran per a comunicar-se
 * entre les aplicacions clients i servidora.
 * 
 * @author Ignacio Cougil Jares
 */

@WebService
public abstract class CoreWebServiceImpl implements CoreWebService {

	protected static final Logger logger = Logger
	.getLogger(CoreWebServiceImpl.class);

	// servei encarregat de la lògica de l'aplicació
	protected AppService appService;


	/* (non-Javadoc)
	 * @see com.cougil.uoc.seghismed.webservice.CoreWebService#autenticar(com.cougil.uoc.seghismed.model.comunicacions.ciphed.PeticioCiphed)
	 */
	@Override
	public RespostaCiphed autenticar(PeticioCiphed pCiphed) {
		RespostaCiphed rc = null;
		try {
			rc = this.appService.autenticar(pCiphed);
		} catch (Exception e) {
			CoreWebServiceImpl.logger
					.error("Error realitzant l'autenticació: "
					+ e.getMessage(), e);
		}
		return rc;
	}


	/**
	 * Comprova si l'usuari està autenticat o no al servidor
	 * 
	 * @param usuari
	 *            {@link UsuariCiphed} usuari xifrat que es preten comprovar si està
	 *            validat o no al servidor
	 * @return true si l'usuari està validat, false en cas contrari
	 */
	protected boolean isAutenticat(UsuariCiphed usuari) {
		return this.appService.isAutenticat(usuari);
	}


	/**
	 * @param Estableix appService com a valor de la propietat appService
	 */
	public void setAppService(AppService appService) {
		this.appService = appService;
	}


	/* (non-Javadoc)
	 * @see com.cougil.uoc.seghismed.webservice.CoreWebService#sortir(com.cougil.uoc.seghismed.model.comunicacions.ciphed.PeticioCiphed)
	 */
	@Override
	public RespostaCiphed sortir (PeticioCiphed pCiphed) {
		return this.appService.sortir(pCiphed);
	}

}
